//package exam.config;
//
//
//import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
//import com.baomidou.mybatisplus.core.injector.ISqlInjector;
//import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
//import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
//import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.ibatis.reflection.MetaObject;
//import org.mybatis.spring.annotation.MapperScan;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Profile;
//import org.springframework.transaction.annotation.EnableTransactionManagement;
//
//import java.util.Date;
//
///**
// * @author Xiongx
// * @version 1.0
// * @date 2021/3/20 19:24
// * @since JDK 1.8
// */
//@Configuration
//@Slf4j
//@EnableTransactionManagement
//@MapperScan({"exam.mapper","exam.**.mapper","com.**.mapper","system.**.mapper"})
//public class MybatisPlusConfig implements MetaObjectHandler {
//
//    /**
//     * 插入时的填充策略
//     * @return
////     */
//    @Bean
//    public PaginationInterceptor paginationInterceptor() {
//        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
//        // 设置请求的页面大于最大页后操作， true调回到首页，false 继续请求  默认false
//        // paginationInterceptor.setOverflow(false);
//        // 设置最大单页限制数量，默认 500 条，-1 不受限制
//        paginationInterceptor.setLimit(-1);
//        // 开启 count 的 join 优化,只针对部分 left join
//        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
//        return paginationInterceptor;
//    }
//
//
//    /**
//     * 新增时的填充策略
//     * @param metaObject
//     */
//    @Override
//    public void insertFill(MetaObject metaObject) {
//        log.info("start insert fill....."+metaObject.toString());
//        this.setFieldValByName("createTime",new Date(),metaObject);
//        this.setFieldValByName("version",0,metaObject);
//        this.setFieldValByName("deleteStatus",0,metaObject);
//    }
//
//    /**
//     * 更新填充处理
//     * @param metaObject
//     */
//    @Override
//    public void updateFill(MetaObject metaObject) {
//        log.info("tart update fill...."+metaObject.toString());
//        this.setFieldValByName("updateTime",new Date(),metaObject);
//    }
//
//
//    /**
//     * 乐观锁插件
//     * @return
//     */
//    @Bean
//    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
//        return new OptimisticLockerInterceptor();
//    }
//
//
//
//}
